package _go

/*
530. 二叉搜索树的最小绝对差
难度
简单

247

收藏

分享
切换为英文
接收动态
反馈
给你一棵所有节点为非负值的二叉搜索树，请你计算树中任意两节点的差的绝对值的最小值。



示例：

输入：

   1
    \
     3
    /
   2

输出：
1

解释：
最小绝对差为 1，其中 2 和 1 的差的绝对值为 1（或者 2 和 3）。
*/
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
//思路 用户儿茶搜索树的中序遍历  两个相邻节点的差最小  中序遍历记住 前一个节点就好
var pre int
var min int

func getMinimumDifference(root *TreeNode) int {
	pre = -1
	min = 9999999999
	dfs(root)
	return min
}

func dfs(root *TreeNode) {
	if root == nil {
		return
	}
	dfs(root.Left)
	if pre != -1 && root.Val-pre < min {
		min = root.Val - pre
	}
	pre = root.Val
	dfs(root.Right)
}
